package com.atguigu.boot;

import ch.qos.logback.core.db.DBHelper;
import com.atguigu.boot.bean.Pet;
import com.atguigu.boot.bean.User;
import com.atguigu.boot.config.MyConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;


@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
//        1.返回Ioc容器
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class,args);
//        2.查看容器里面的组件
        String[] names = run.getBeanDefinitionNames();
        for (String name : names){
            System.out.println(name);
        }
////        3.从容器中获取组件
//        Pet tom01 = run.getBean("tomxxx",Pet.class);
//        Pet tom02 = run.getBean("tomxxx",Pet.class);
//        System.out.println("组件："+(tom01==tom02));
//        MyConfig bean = run.getBean(MyConfig.class);
//        System.out.println(bean);
////        如果@Configuration(proxyBeanMethods = true)代理对象调用方法
////        springboot总会检查这个组件是否在容器中，保持组件单实例
//        User user = bean.user01();
//        User user1 = bean.user01();
//        System.out.println(user==user1);
//        User user01 = run.getBean("user01", User.class);
//       Pet tom= run.getBean("tomxxx",Pet.class);
//        System.out.println("用户的宠物："+(user01.getPet()==tom));
////        5.获取组件
//       String [] beansNamesForType = run.getBeanNamesForType(User.class);
//        System.out.println("===========");
//        for (String s : beansNamesForType) {
//            System.out.println(s);
//        }
//        DBHelper bean1 = run.getBean(DBHelper.class);
//        System.out.println(bean1);
       boolean tom =  run.containsBean("tom");
        System.out.println("容器中是否有tom组件："+tom);
       boolean user01= run.containsBean("user01");
        System.out.println("容器中是否有user01组件："+user01);
        boolean tom22 = run.containsBean("tom22");
        System.out.println("容器中是否有tom22组件："+tom22);
        boolean haha = run.containsBean("haha");
        System.out.println("haha:"+haha);
    }
}
